
package com.sojson.util.httpclient.bean;

import java.util.List;
import java.util.Map;

import com.sojson.base.impl.BaseUtilDto;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.CaseInsensitiveMap;
import cn.hutool.core.util.StrUtil;

/**
 * 对Http客户端的响应进行封装
 * 
 * @author liu
 * @date 2021-04-22
 */
public class HttpResponse extends BaseUtilDto {

    private static final long serialVersionUID = 6089103955998013402L;

    /** 响应体 */
    private String body;
    /** 响应状态码 */
    private int status;
    /** 响应头 */
    private Map<String, List<String>> headers;

    /** 获取响应体 */
    public String getBody() {
        return body;
    }

    /** 设置响应体 */
    public void setBody(String body) {
        this.body = body;
    }

    /** 获取状态码 */
    public int getStatus() {
        return status;
    }

    /** 设置状态码 */
    public void setStatus(int status) {
        this.status = status;
    }

    /** 获取所有响应头 */
    public Map<String, List<String>> getHeaders() {
        return headers;
    }

    /** 设置所有响应头 */
    public void setHeaders(Map<String, List<String>> headers) {
        this.headers = headers;
    }

    /** 获取单个响应头 */
    public String getHeader(String name) {
        List<String> values = this.headerList(name);
        return CollectionUtil.isEmpty(values) ? null : values.get(0);
    }

    /** 获取响应头列表 */
    private List<String> headerList(String name) {
        if (StrUtil.isBlank(name)) {
            return null;
        } else {
            CaseInsensitiveMap<String, List<String>> headersIgnoreCase = new CaseInsensitiveMap<>(getHeaders());
            return headersIgnoreCase.get(name.trim());
        }
    }

}